// EAN2.js - EAN-2 附加码实现（用于期刊等）
// 支持 2 位数字编码，基于模 4 选择编码结构

import Barcode from '../Barcode.js';
import { EAN2_STRUCTURE } from './constants.js';
import encoder from './encoder.js';

export class EAN2 extends Barcode {
	constructor(data, options) {
		super(data, options);
	}

	/**
	 * 验证输入数据是否合法（必须是两位数字）
	 * @returns {boolean}
	 */
	valid() {
		return /^[0-9]{2}$/.test(this.data);
	}

	/**
	 * 编码 EAN-2 附加码
	 * 结构：起始位 '1011' + 两位数字编码（中间插入 '01' 分隔符）
	 * @returns {{ data: string, text: string }}
	 */
	encode() {
		// 根据数值 mod 4 选择编码结构（LL, LG, GL, GG）
		const structureIndex = parseInt(this.data) % 4;
		const structure = EAN2_STRUCTURE[structureIndex];

		// 编码两位数字，中间自动插入 '01'
		const encodedData = encoder(this.data, structure, '01');

		return {
			// 完整二进制：起始位 + 编码数据
			data: '1011' + encodedData,
			text: this.text, // 显示原始文本
		};
	}
}
